{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# TensorTrade - Renderers and Plotly Visualization Chart\n",
    "## Data Loading Function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ipywidgets is required to run Plotly in Jupyter Notebook.\n",
    "# Uncomment and run the following line to install it if required.\n",
    "\n",
    "#!pip install ipywidgets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import ta\n",
    "\n",
    "import pandas as pd\n",
    "\n",
    "from tensortrade.feed.core import Stream, DataFeed, NameSpace\n",
    "from tensortrade.oms.exchanges import Exchange\n",
    "from tensortrade.oms.services.execution.simulated import execute_order\n",
    "from tensortrade.oms.instruments import USD, BTC\n",
    "from tensortrade.oms.wallets import Wallet, Portfolio\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_csv(filename):\n",
    "    df = pd.read_csv('data/' + filename, skiprows=1)\n",
    "    df.drop(columns=['symbol', 'volume_btc'], inplace=True)\n",
    "\n",
    "    # Fix timestamp form \"2019-10-17 09-AM\" to \"2019-10-17 09-00-00 AM\"\n",
    "    df['date'] = df['date'].str[:14] + '00-00 ' + df['date'].str[-2:]\n",
    "\n",
    "    # Convert the date column type from string to datetime for proper sorting.\n",
    "    df['date'] = pd.to_datetime(df['date'])\n",
    "\n",
    "    # Make sure historical prices are sorted chronologically, oldest first.\n",
    "    df.sort_values(by='date', ascending=True, inplace=True)\n",
    "\n",
    "    df.reset_index(drop=True, inplace=True)\n",
    "\n",
    "    # Format timestamps as you want them to appear on the chart buy/sell marks.\n",
    "    df['date'] = df['date'].dt.strftime('%Y-%m-%d %I:%M %p')\n",
    "\n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2017-07-01 11:00 AM</td>\n",
       "      <td>2505.56</td>\n",
       "      <td>2513.38</td>\n",
       "      <td>2495.12</td>\n",
       "      <td>2509.17</td>\n",
       "      <td>287000.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2017-07-01 12:00 PM</td>\n",
       "      <td>2509.17</td>\n",
       "      <td>2512.87</td>\n",
       "      <td>2484.99</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>393142.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2017-07-01 01:00 PM</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>2454.40</td>\n",
       "      <td>2454.43</td>\n",
       "      <td>693254.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2017-07-01 02:00 PM</td>\n",
       "      <td>2454.43</td>\n",
       "      <td>2473.93</td>\n",
       "      <td>2450.83</td>\n",
       "      <td>2459.35</td>\n",
       "      <td>712864.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2017-07-01 03:00 PM</td>\n",
       "      <td>2459.35</td>\n",
       "      <td>2475.00</td>\n",
       "      <td>2450.00</td>\n",
       "      <td>2467.83</td>\n",
       "      <td>682105.41</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  date     open     high      low    close     volume\n",
       "0  2017-07-01 11:00 AM  2505.56  2513.38  2495.12  2509.17  287000.32\n",
       "1  2017-07-01 12:00 PM  2509.17  2512.87  2484.99  2488.43  393142.50\n",
       "2  2017-07-01 01:00 PM  2488.43  2488.43  2454.40  2454.43  693254.01\n",
       "3  2017-07-01 02:00 PM  2454.43  2473.93  2450.83  2459.35  712864.80\n",
       "4  2017-07-01 03:00 PM  2459.35  2475.00  2450.00  2467.83  682105.41"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = load_csv('Bitfinex_BTCUSD_1h.csv')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Preparation\n",
    "### Create the dataset features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/anaconda3/lib/python3.7/site-packages/ta/trend.py:170: RuntimeWarning: invalid value encountered in double_scalars\n",
      "  dip[i] = 100 * (dip_mio[i]/trs[i])\n",
      "/usr/local/anaconda3/lib/python3.7/site-packages/ta/trend.py:174: RuntimeWarning: invalid value encountered in double_scalars\n",
      "  din[i] = 100 * (din_mio[i]/trs[i])\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>volume</th>\n",
       "      <th>volume_adi</th>\n",
       "      <th>volume_obv</th>\n",
       "      <th>volume_cmf</th>\n",
       "      <th>volume_fi</th>\n",
       "      <th>...</th>\n",
       "      <th>momentum_tsi</th>\n",
       "      <th>momentum_uo</th>\n",
       "      <th>momentum_stoch</th>\n",
       "      <th>momentum_stoch_signal</th>\n",
       "      <th>momentum_wr</th>\n",
       "      <th>momentum_ao</th>\n",
       "      <th>momentum_kama</th>\n",
       "      <th>others_dr</th>\n",
       "      <th>others_dlr</th>\n",
       "      <th>others_cr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2017-07-01 11:00 AM</td>\n",
       "      <td>2505.56</td>\n",
       "      <td>2513.38</td>\n",
       "      <td>2495.12</td>\n",
       "      <td>2509.17</td>\n",
       "      <td>287000.32</td>\n",
       "      <td>503274.359452</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.538883</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>...</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>0.299976</td>\n",
       "      <td>76.944140</td>\n",
       "      <td>76.944140</td>\n",
       "      <td>-23.055860</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2509.17</td>\n",
       "      <td>-65.047642</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2017-07-01 12:00 PM</td>\n",
       "      <td>2509.17</td>\n",
       "      <td>2512.87</td>\n",
       "      <td>2484.99</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>393142.50</td>\n",
       "      <td>-141466.449196</td>\n",
       "      <td>-393142.50</td>\n",
       "      <td>-0.207995</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>...</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>0.371212</td>\n",
       "      <td>12.116943</td>\n",
       "      <td>44.530541</td>\n",
       "      <td>-87.883057</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>-0.826568</td>\n",
       "      <td>-0.830003</td>\n",
       "      <td>-0.826568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2017-07-01 01:00 PM</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>2454.40</td>\n",
       "      <td>2454.43</td>\n",
       "      <td>693254.01</td>\n",
       "      <td>-988157.685450</td>\n",
       "      <td>-1086396.51</td>\n",
       "      <td>-0.606888</td>\n",
       "      <td>-2.223833e+07</td>\n",
       "      <td>...</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>0.369183</td>\n",
       "      <td>0.050865</td>\n",
       "      <td>29.703982</td>\n",
       "      <td>-99.949135</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2454.43</td>\n",
       "      <td>-1.366323</td>\n",
       "      <td>-1.375743</td>\n",
       "      <td>-2.181598</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 65 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  date     open     high      low    close     volume  \\\n",
       "0  2017-07-01 11:00 AM  2505.56  2513.38  2495.12  2509.17  287000.32   \n",
       "1  2017-07-01 12:00 PM  2509.17  2512.87  2484.99  2488.43  393142.50   \n",
       "2  2017-07-01 01:00 PM  2488.43  2488.43  2454.40  2454.43  693254.01   \n",
       "\n",
       "      volume_adi  volume_obv  volume_cmf     volume_fi  ...  momentum_tsi  \\\n",
       "0  503274.359452        0.00    0.538883  0.000000e+00  ...        -100.0   \n",
       "1 -141466.449196  -393142.50   -0.207995  0.000000e+00  ...        -100.0   \n",
       "2 -988157.685450 -1086396.51   -0.606888 -2.223833e+07  ...        -100.0   \n",
       "\n",
       "   momentum_uo  momentum_stoch  momentum_stoch_signal  momentum_wr  \\\n",
       "0     0.299976       76.944140              76.944140   -23.055860   \n",
       "1     0.371212       12.116943              44.530541   -87.883057   \n",
       "2     0.369183        0.050865              29.703982   -99.949135   \n",
       "\n",
       "   momentum_ao  momentum_kama  others_dr  others_dlr  others_cr  \n",
       "0          0.0        2509.17 -65.047642    0.000000   0.000000  \n",
       "1          0.0        2488.43  -0.826568   -0.830003  -0.826568  \n",
       "2          0.0        2454.43  -1.366323   -1.375743  -2.181598  \n",
       "\n",
       "[3 rows x 65 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset = ta.add_all_ta_features(df, 'open', 'high', 'low', 'close', 'volume', fillna=True)\n",
    "dataset.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Create Chart Price History Data\n",
    "Note: It is recommended to create the chart data *after* creating and cleaning the dataset to ensure one-to-one mapping between the historical prices data and the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2017-07-01 11:00 AM</td>\n",
       "      <td>2505.56</td>\n",
       "      <td>2513.38</td>\n",
       "      <td>2495.12</td>\n",
       "      <td>2509.17</td>\n",
       "      <td>287000.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2017-07-01 12:00 PM</td>\n",
       "      <td>2509.17</td>\n",
       "      <td>2512.87</td>\n",
       "      <td>2484.99</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>393142.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2017-07-01 01:00 PM</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>2488.43</td>\n",
       "      <td>2454.40</td>\n",
       "      <td>2454.43</td>\n",
       "      <td>693254.01</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  date     open     high      low    close     volume\n",
       "0  2017-07-01 11:00 AM  2505.56  2513.38  2495.12  2509.17  287000.32\n",
       "1  2017-07-01 12:00 PM  2509.17  2512.87  2484.99  2488.43  393142.50\n",
       "2  2017-07-01 01:00 PM  2488.43  2488.43  2454.40  2454.43  693254.01"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "price_history = dataset[['date', 'open', 'high', 'low', 'close', 'volume']]  # chart data\n",
    "display(price_history.head(3))\n",
    "\n",
    "dataset.drop(columns=['date', 'open', 'high', 'low', 'close', 'volume'], inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setup Trading Environment\n",
    "### Create Data Feeds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'bitfinex:/volume_adi': 503274.35945218964,\n",
       " 'bitfinex:/volume_obv': 0.0,\n",
       " 'bitfinex:/volume_cmf': 0.5388828039430464,\n",
       " 'bitfinex:/volume_fi': 0.0,\n",
       " 'bitfinex:/volume_em': 0.0,\n",
       " 'bitfinex:/volume_vpt': -187039.68188942864,\n",
       " 'bitfinex:/volume_nvi': 1000.0,\n",
       " 'bitfinex:/volatility_atr': 88.87448632521046,\n",
       " 'bitfinex:/volatility_bbh': 2509.17,\n",
       " 'bitfinex:/volatility_bbl': 2509.17,\n",
       " 'bitfinex:/volatility_bbm': 2509.17,\n",
       " 'bitfinex:/volatility_bbhi': 0.0,\n",
       " 'bitfinex:/volatility_bbli': 0.0,\n",
       " 'bitfinex:/volatility_kcc': 2505.89,\n",
       " 'bitfinex:/volatility_kch': 2524.15,\n",
       " 'bitfinex:/volatility_kcl': 2487.6299999999997,\n",
       " 'bitfinex:/volatility_kchi': 0.0,\n",
       " 'bitfinex:/volatility_kcli': 0.0,\n",
       " 'bitfinex:/volatility_dch': 2509.17,\n",
       " 'bitfinex:/volatility_dcl': 2509.17,\n",
       " 'bitfinex:/volatility_dchi': 0.0,\n",
       " 'bitfinex:/volatility_dcli': 0.0,\n",
       " 'bitfinex:/trend_macd': 0.0,\n",
       " 'bitfinex:/trend_macd_signal': 0.0,\n",
       " 'bitfinex:/trend_macd_diff': 0.0,\n",
       " 'bitfinex:/trend_ema_fast': 2509.17,\n",
       " 'bitfinex:/trend_ema_slow': 2509.17,\n",
       " 'bitfinex:/trend_adx': 0.0,\n",
       " 'bitfinex:/trend_adx_pos': 0.0,\n",
       " 'bitfinex:/trend_adx_neg': 0.0,\n",
       " 'bitfinex:/trend_vortex_ind_pos': 1.0,\n",
       " 'bitfinex:/trend_vortex_ind_neg': 1.0,\n",
       " 'bitfinex:/trend_vortex_diff': 0.0,\n",
       " 'bitfinex:/trend_trix': -65.01942947444225,\n",
       " 'bitfinex:/trend_mass_index': 1.0,\n",
       " 'bitfinex:/trend_cci': 0.0,\n",
       " 'bitfinex:/trend_dpo': 4669.658895132072,\n",
       " 'bitfinex:/trend_kst': -650.476416605854,\n",
       " 'bitfinex:/trend_kst_sig': -650.476416605854,\n",
       " 'bitfinex:/trend_kst_diff': 0.0,\n",
       " 'bitfinex:/trend_ichimoku_a': 2504.25,\n",
       " 'bitfinex:/trend_ichimoku_b': 2504.25,\n",
       " 'bitfinex:/trend_visual_ichimoku_a': 7164.427851548871,\n",
       " 'bitfinex:/trend_visual_ichimoku_b': 7151.343258415852,\n",
       " 'bitfinex:/trend_aroon_up': 4.0,\n",
       " 'bitfinex:/trend_aroon_down': 4.0,\n",
       " 'bitfinex:/trend_aroon_ind': 0.0,\n",
       " 'bitfinex:/momentum_rsi': 50.0,\n",
       " 'bitfinex:/momentum_mfi': 50.0,\n",
       " 'bitfinex:/momentum_tsi': -100.0,\n",
       " 'bitfinex:/momentum_uo': 0.29997594458961346,\n",
       " 'bitfinex:/momentum_stoch': 76.94414019715232,\n",
       " 'bitfinex:/momentum_stoch_signal': 76.94414019715232,\n",
       " 'bitfinex:/momentum_wr': -23.055859802847678,\n",
       " 'bitfinex:/momentum_ao': 0.0,\n",
       " 'bitfinex:/momentum_kama': 2509.17,\n",
       " 'bitfinex:/others_dr': -65.0476416605854,\n",
       " 'bitfinex:/others_dlr': 0.0,\n",
       " 'bitfinex:/others_cr': 0.0}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bitfinex = Exchange(\"bitfinex\", service=execute_order)(\n",
    "    Stream.source(price_history['close'].tolist(), dtype=\"float\").rename(\"USD-BTC\")\n",
    ")\n",
    "\n",
    "portfolio = Portfolio(USD, [\n",
    "    Wallet(bitfinex, 10000 * USD),\n",
    "    Wallet(bitfinex, 10 * BTC),\n",
    "])\n",
    "\n",
    "with NameSpace(\"bitfinex\"):\n",
    "    streams = [Stream.source(dataset[c].tolist(), dtype=\"float\").rename(c) for c in dataset.columns]\n",
    "\n",
    "feed = DataFeed(streams)\n",
    "feed.next()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Trading Environment Renderers\n",
    "A renderer is a channel for the trading environment to output its current state. One or more renderers can be attached to the environment at the same time. For example, you can let the environment draw a chart and log to a file at the same time.\n",
    "\n",
    "Notice that while all renderers can technically be used together, you need to select the best combination to avoid undesired results. For example, PlotlyTradingChart can work well with FileLogger but may not display well with ScreenLogger.\n",
    "\n",
    "Renderer can be set by name (string) or class, single or list. Available renderers are:\n",
    "* `'screenlog'` or `ScreenLogger`: Shows results on the screen.\n",
    "* `'filelog'` or `FileLogger`: Logs results to a file.\n",
    "* `'plotly'` or `PlotlyTradingChart`: A trading chart based on Plotly.\n",
    "\n",
    "#### Examples:\n",
    "\n",
    "* renderers = 'screenlog' (default)\n",
    "* renderers = ['screenlog', 'filelog']\n",
    "* renderers = ScreenLogger()\n",
    "* renderers = ['screenlog', `FileLogger()`]\n",
    "* renderers = [`FileLogger(filename='example.log')`]\n",
    "\n",
    "Renderers can also be created and configured first then attached to the environment as seen in a following example.\n",
    "\n",
    "### Trading Environment with a Single Renderer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensortrade.env.default as default\n",
    "\n",
    "env = default.create(\n",
    "    portfolio=portfolio,\n",
    "    action_scheme=\"managed-risk\",\n",
    "    reward_scheme=\"risk-adjusted\",\n",
    "    feed=feed,\n",
    "    renderer=\"screen-log\",  # ScreenLogger used with default settings\n",
    "    window_size=20\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "====      AGENT ID: b8b6ad1a-c158-4743-8a2d-aab3a26ce82c      ====\n",
      "[2020-07-29 3:43:06 PM] Episode: 1/2 Step: 131/200\n",
      "[2020-07-29 3:43:07 PM] Episode: 1/2 Step: 141/200\n",
      "[2020-07-29 3:43:08 PM] Episode: 1/2 Step: 151/200\n",
      "[2020-07-29 3:43:09 PM] Episode: 1/2 Step: 161/200\n",
      "[2020-07-29 3:43:11 PM] Episode: 1/2 Step: 171/200\n",
      "[2020-07-29 3:43:12 PM] Episode: 1/2 Step: 181/200\n",
      "[2020-07-29 3:43:13 PM] Episode: 1/2 Step: 191/200\n",
      "[2020-07-29 3:43:14 PM] Episode: 1/2 Step: 201/200\n",
      "[2020-07-29 3:43:15 PM] Episode: 2/2 Step: 11/200\n",
      "[2020-07-29 3:43:16 PM] Episode: 2/2 Step: 21/200\n",
      "[2020-07-29 3:43:17 PM] Episode: 2/2 Step: 31/200\n",
      "[2020-07-29 3:43:19 PM] Episode: 2/2 Step: 41/200\n",
      "[2020-07-29 3:43:20 PM] Episode: 2/2 Step: 51/200\n",
      "[2020-07-29 3:43:21 PM] Episode: 2/2 Step: 61/200\n",
      "[2020-07-29 3:43:22 PM] Episode: 2/2 Step: 71/200\n",
      "[2020-07-29 3:43:23 PM] Episode: 2/2 Step: 81/200\n",
      "[2020-07-29 3:43:24 PM] Episode: 2/2 Step: 91/200\n",
      "[2020-07-29 3:43:25 PM] Episode: 2/2 Step: 101/200\n",
      "[2020-07-29 3:43:26 PM] Episode: 2/2 Step: 111/200\n",
      "[2020-07-29 3:43:27 PM] Episode: 2/2 Step: 121/200\n",
      "[2020-07-29 3:43:29 PM] Episode: 2/2 Step: 131/200\n",
      "[2020-07-29 3:43:30 PM] Episode: 2/2 Step: 141/200\n",
      "[2020-07-29 3:43:31 PM] Episode: 2/2 Step: 151/200\n",
      "[2020-07-29 3:43:32 PM] Episode: 2/2 Step: 161/200\n",
      "[2020-07-29 3:43:33 PM] Episode: 2/2 Step: 171/200\n",
      "[2020-07-29 3:43:34 PM] Episode: 2/2 Step: 181/200\n",
      "[2020-07-29 3:43:35 PM] Episode: 2/2 Step: 191/200\n",
      "[2020-07-29 3:43:36 PM] Episode: 2/2 Step: 201/200\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "-125697.1219732128"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from tensortrade.agents import DQNAgent\n",
    "\n",
    "agent = DQNAgent(env)\n",
    "agent.train(n_episodes=2, n_steps=200, render_interval=10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Environment with Multiple Renderers\n",
    "Create PlotlyTradingChart and FileLogger renderers. Configuring renderers is optional as they can be used with their default settings."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensortrade.env.default.renderers import PlotlyTradingChart, FileLogger\n",
    "\n",
    "chart_renderer = PlotlyTradingChart(\n",
    "    display=True,  # show the chart on screen (default)\n",
    "    height=800,  # affects both displayed and saved file height. None for 100% height.\n",
    "    save_format=\"html\",  # save the chart to an HTML file\n",
    "    auto_open_html=True,  # open the saved HTML chart in a new browser tab\n",
    ")\n",
    "\n",
    "file_logger = FileLogger(\n",
    "    filename=\"example.log\",  # omit or None for automatic file name\n",
    "    path=\"training_logs\"  # create a new directory if doesn't exist, None for no directory\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Environement with Multiple Renderers\n",
    "\n",
    "With the plotly renderer you must provide an parameter called `renderer_feed`. This is a `DataFeed` instance that provides all the information that is required by a renderer to function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "renderer_feed = DataFeed([\n",
    "    Stream.source(price_history[c].tolist(), dtype=\"float\").rename(c) for c in price_history]\n",
    ")\n",
    "\n",
    "env = default.create(\n",
    "    portfolio=portfolio,\n",
    "    action_scheme=\"managed-risk\",\n",
    "    reward_scheme=\"risk-adjusted\",\n",
    "    feed=feed,\n",
    "    window_size=20,\n",
    "    renderer_feed=renderer_feed,\n",
    "    renderer=[\n",
    "        chart_renderer, \n",
    "        file_logger\n",
    "    ]\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setup and Train DQN Agent\n",
    "The green and red arrows shown on the chart represent buy and sell trades respectively. The head of each arrow falls at the trade execution price."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "====      AGENT ID: fec5e2c5-eb35-4ff6-8416-b876f0e8be66      ====\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "-122271.41943956864"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from tensortrade.agents import DQNAgent\n",
    "\n",
    "agent = DQNAgent(env)\n",
    "\n",
    "# Set render_interval to None to render at episode ends only\n",
    "agent.train(n_episodes=2, n_steps=200, render_interval=10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Direct Performance and Net Worth Plotting\n",
    "Alternatively, the final performance and net worth can be displayed using pandas via Matplotlib."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x145e2d850>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "performance = pd.DataFrame.from_dict(env.action_scheme.portfolio.performance, orient='index')\n",
    "performance.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x145ede2d0>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "performance.net_worth.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
